package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Fengkai
 * @creat 2023/4/11
 * 有一种简易压缩算法：针对全部由小写英文字母组成的字符串，将其中连续超过两个相同字母的部分压缩为连续个数加该字母，其他部分保持原样不变。例如：字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。 请您编写解压函数，根据输入的字符串，判断其是否为合法压缩过的字符串，若输入合法则输出解压缩后的字符串，否则输出字符串“!error”来报告错误。
 * 输入描述:
 * 输入一行，为一个 ASCII 字符串，长度不会超过 100 字符，用例保证输出的字符串长度也不会超过 100 字符
 * 输出描述:
 * 若判断输入为合法的经过压缩后的字符串，则输出压缩前的字符串；若输入不合法，则输出字符串“!error”。
 */
public class YaSuoString {

    public static void main (String[] args) {
        System.out.println(getRightStr("3d4faa6r7t3eacvbeqeu3m"));

    }

    public static String getRightStr (String input) {
        if (input.contains("0") || input.contains("1") || input.contains("2")) {
            return "!error";
        }
        StringBuilder stringBuilder = new StringBuilder();
        Pattern compile = Pattern.compile("[\\d]");
        for (int i = 0; i < input.length(); i++) {
            Matcher matcher = compile.matcher(String.valueOf(input.charAt(i)));
            if (matcher.find()) {
                Integer group = Integer.valueOf(matcher.group());
                char c = input.charAt(++i);
                for (int j = 0; j < group; j++) {
                    stringBuilder.append(c);
                }
            } else {
                stringBuilder.append(input.charAt(i));
            }
        }
        return stringBuilder.toString();
    }
}
